Hello, 我是 Weber,一位工程師,斜槓鼓手與行銷顧問。
今天是每日一套件的第 16 天,繼續跟著我一起認識 Rails 開發好用的 30 個套件,建立出自己的常用套件庫吧!
Sidekiq 一個我納入題目很久的套件,雖然他的簡介很簡單,不過功力不到,還不能講得很清楚。
Simple, efficient background jobs for Ruby.
為 Ruby 提供簡單、有效的背景運作。
是 Rails 框架中經常使用的背景程式處理的套件。背景程式可以協助在背景處理一些費時、或是耗費資源的工作。
避免網站被使用者重複觸發造成網站卡住,或者消耗更多資源。但仔細研究下來,其實能講的範圍很廣泛,再來會牽扯到 Redis,是目前的我還不熟悉的環境。
不過凡事總有個開頭,所以打算先寫下來,後續如我研究得更完整了,再來補充更完整。
首先,他的名字跟logo,我相信應該是取自武術中的 sidekick 側踢。不過這不是我的領域範圍,無法說什麼,只知道你會查到一堆跟李小龍有關的事情。
再來,sidekiq 雖然是個開源的後台框架,他也有付費的的商業版本。另外,要注意它的 license 是 LGPL,也就是號稱寬鬆版的 GPL。以下是這兩種 license 的簡單介紹:
GPL(General Public License)是一種自由軟體授權,保障了使用者的權利,要求任何使用、修改或散佈該軟體的人都必須開放原始碼,並讓其衍生作品同樣遵循GPL。這鼓勵共享和合作,確保開源生態系統的健康。
LGPL(Lesser General Public License)是GPL的變種。LGPL允許將其連結到非GPL軟體中,而不要求整個應用程式都遵循GPL,保護了庫的開發者和使用者的靈活性。
GPL 最為人詬病的就是租體的那一行,其實這原本算是開源的美意,但這樣自由的權利是以「copyleft」條款為基礎,依據了copyleft 條款,一但你使用了跟 GPL 有關的套件做開發,你也被必須要求使用後的衍生作品,也需要以同等的授權方式釋出。也就是一日開源,終身開源。這就大家見仁見智了。
至於 LGPL 其實也是差不多。唯一的差別似乎是 如果是單純呼叫函式庫並不會被 LGPL 給規範。
(有錯的話請大力鞭打我!)
提醒完畢,回歸正題:
首先,要先用 redis
brew install redis
redis-server
接著老招起手式 bundle add
bundle add sidekiq
接著,如果我們要將ActiveJob的非同步處理做設定,要透過 config/environments/development.rb
切換使用sidekiq,將 active_job 延後執行時,queue 到哪個 adapter。
config.active_job.queue_adapter = :sidekiq
接著,設定載入路徑、adapter 類型,以及 yml 檔
在 config/application.rb
中加入設定,讓 Rails 可以找到 job 檔案
config.eager_load_paths += %W( #{config.root}/app/jobs )
config/sidekiq.yml
:queues:
- default
- mailers
更多的設定,請參考官方文件。
要啟用 sidekiq,請使用指令:
$ bundle exec sidekiq
這邊先到這裡,為了不要誤人子弟,等我研究完 redis 在完成下篇!
我們明天見!